package main

import (
	"fmt"
	"time"
)

func foo2() {

	fmt.Println("foo功能开始")
	time.Sleep(time.Second * 2)
	fmt.Println("foo功能结束")

}

func bar2() {
	fmt.Println("bar功能开始")
	time.Sleep(time.Second * 3)
	fmt.Println("bar功能结束")

}

func getProTimer(f func()) func() { // 计数器装饰函数

	return func() {
		start := time.Now().Unix()
		f() // 原有功能函数执行
		end := time.Now().Unix()
		fmt.Println("cost timer:", end-start)
	}
}

func main() {
	foo := getProTimer(foo) // 针对foo函数的耗时统计装饰函数
	foo()
	foo()
	bar := getProTimer(bar)
	bar()

}
